package org.rednebula.framework.core;

import java.io.Serializable;

import org.rednebula.framework.core.utils.InternalConstant;


public interface IContext  extends Serializable{
	
	  String PROCEDUREENGINE=InternalConstant.PROCEDUREENGINE;
	  
	  String SPRING=InternalConstant.SPRINGAPPLICATIONCONTEXT;
	  
	  String APPLICTION=InternalConstant.INTERNALSERVLETCONTEXT;
	  
	  String SESSION=InternalConstant.HTTPSESSIONCONTEXT;
	  
	  String REQUEST=InternalConstant.HTTPREQUESTCONTEXT;
	  
	  String FLOW=InternalConstant.JBPM_PROCESSENGINE_NAME;
	  
	  String VALUESTACKCONTEXT=InternalConstant.VALUESTACKCONTEXT;
	
	  public String getName();
	  
	  public <T> T get(String key);
	  
	  public <T> T get(Class<T> type);
	  
	  public boolean has(String name);
	  
	  void close();
}
